static void
gpgll_parse(char *ibuf)
{
- double latdeg, lngdeg;
+ double latdeg, lngdeg, microseconds;
char lngdir, latdir;
+ double hmsd;
int hms;
char valid = 0;
waypoint *waypt;
track_add_head(trk_head);
}
- sscanf(ibuf,"$GPGLL,%lf,%c,%lf,%c,%d,%c,",
+ sscanf(ibuf,"$GPGLL,%lf,%c,%lf,%c,%lf,%c,",
&latdeg,&latdir,
&lngdeg,&lngdir,
- &hms,&valid);
+ &hmsd,&valid);
if (valid != 'A')
return;
+ hms = (int) hmsd;
+ microseconds = MILLI_TO_MICRO(1000 * (hmsd - hms));
+
tm.tm_sec = hms % 100;
hms = hms / 100;
tm.tm_min = hms % 100;
waypt = waypt_new();
- nmea_set_waypoint_time(waypt, &tm, 0);
+ nmea_set_waypoint_time(waypt, &tm, microseconds);
if (latdir == 'S') latdeg = -latdeg;
waypt->latitude = ddmm2degrees(latdeg);